package cn.inkur.algorithm.basic;

/**
 * <p>
 * 打印整数的32位二进制
 * </p>
 *
 * @author: Hsu
 * @date: 2024/10/20 17:12
 * @copyright: companyName
 * @see
 * @since 1.8
 */
public class PrintIntBit {

    public static void printIntBit(int num) {
        for (int i = 31; i >= 0; i--) {
            // num & (1 << i) 表示将num与2的i次方进行按位与操作
            // 1 << i 表示将1左移i位，相当于2的i次方
            // 左移之后，右边数位用0填充
            // << 运算符会将数字的二进制表示向左移动指定的位数，并将右边空出的位用0填充
            // <<< 运算符会将数字的二进制表示向左移动指定的位数，并将右边空出的位用符号位填充
            System.out.print((num & (1 << i)) == 0 ? "0" : "1");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        // int 32位
        int num = 10;
        printIntBit(num);
    }

}
